package com.qf.fmall2302.websocket;

import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

@Component
@ServerEndpoint("/test")
public class MyWebSocketServer {

    /**
     * 当某个浏览器跟我们的服务器建立连接时，需要做的事情，写在这个方法里
     * @param session 这个对象就是浏览器和服务器建立好的websocket长连接对象
     */
    @OnOpen
    public void onOpen(Session session) throws IOException, InterruptedException {
        System.out.println("服务器端接收到了连接请求.....");
        // 发送消息给浏览器
        session.getBasicRemote().sendText("hello from server "+new Date());

        String line1 = "告白气球";
        String line2 = "塞纳河畔左岸的咖啡";
        String line3 = "我手一杯，品尝你的美";
        String line4 = "留下唇印的嘴";

        List<String> list = Arrays.asList(line1, line2, line3, line4);

        for (String line : list) {
            Thread.sleep(1000);
            session.getBasicRemote().sendText(line);
        }
    }

    /**
     * 当浏览器发送消息给服务器时，需要做的事项，写在这个方法里
     * @param session 这个对象就是浏览器和服务器建立好的websocket长连接对象
     * @param msg 浏览器发送的消息的内容
     */
    @OnMessage
    public void onMessage(Session session,String msg) throws IOException {
        System.out.println("接收到浏览器发送的消息内容为:"+msg);
        // 给浏览器会送一个消息
        String serverMsg = "来自服务器端的响应:"+msg;
        session.getBasicRemote().sendText(serverMsg);
    }


    /**
     * 当浏览器关闭连接时，要做的事项写在这个方法里
     * @param session
     */
    @OnClose
    public void onClose(Session session) throws IOException {
        System.out.println("浏览器断开连接，断开的session对象为:"+session.getId());
//        session.getBasicRemote().sendText("最后的告别，能发过去么");
        session.close();
    }

}
